জাভাস্ক্রিপ্টে BigInt একটি নতুন প্রিমিটিভ ডেটা টাইপ, যা খুব বড় সংখ্যাগুলো ধারণ করতে ব্যবহৃত হয়। এটি ES2020 (ECMAScript 2020) এ পরিচিতি লাভ করে এবং জাভাস্ক্রিপ্টের Number
টাইপের সীমাবদ্ধতাগুলোকে কাটিয়ে ওঠার জন্য ডিজাইন করা হয়েছে। BigInt
দিয়ে আপনি এমন বড় সংখ্যা পরিচালনা করতে পারবেন যা Number.MAX_SAFE_INTEGER
এর থেকেও বড়।
BigInt হলো একটি প্রিমিটিভ ডেটা টাইপ যা জাভাস্ক্রিপ্টে অত্যন্ত বড় পূর্ণসংখ্যা (integer) ধারণ করতে সক্ষম। Number
টাইপের সংখ্যাগুলো সাধারণত ৫৩ বিট পর্যন্ত সঠিকভাবে প্রতিনিধিত্ব করতে পারে, যার মানে হল Number.MAX_SAFE_INTEGER
হল ৯,০০০,০০০,০০০,০০০,০০০। এই সীমার বাইরে যদি সংখ্যা ব্যবহৃত হয়, তাহলে তা সঠিকভাবে প্রতিনিধিত্ব করা সম্ভব নয়। BigInt এই সীমা ছাড়িয়ে যাওয়ার পরেও সঠিক মান প্রদান করে।
BigInt তৈরি করার দুটি প্রধান পদ্ধতি রয়েছে:
n
সাফেক্স ব্যবহার করেএকটি সংখ্যার শেষে n
যুক্ত করে BigInt তৈরি করা যায়।
const bigNumber = 123456789012345678901234567890n;
console.log(bigNumber); // আউটপুট: 123456789012345678901234567890n
BigInt()
কনস্ট্রাক্টর ব্যবহার করেBigInt()
ফাংশন ব্যবহার করে সংখ্যাকে BigInt এ রূপান্তর করা যায়।
const bigNumber = BigInt("123456789012345678901234567890");
console.log(bigNumber); // আউটপুট: 123456789012345678901234567890n
BigInt দিয়ে আপনি অত্যন্ত বড় সংখ্যা সঠিকভাবে পরিচালনা করতে পারেন, যা Number
টাইপের সীমাবদ্ধতার বাইরে।
const big1 = 9007199254740991n; // Number.MAX_SAFE_INTEGER
const big2 = 9007199254740992n;
console.log(big1 + 1n); // আউটপুট: 9007199254740992n
console.log(big2 + 1n); // আউটপুট: 9007199254740993n
BigInt একটি প্রিমিটিভ ডেটা টাইপ, যা Number
, String
, Boolean
ইত্যাদির মতোই।
const big = 123456789012345678901234567890n;
console.log(typeof big); // আউটপুট: "bigint"
BigInt ইটারেবল বা ইটারেটর হিসেবে ব্যবহৃত হতে পারে না, অর্থাৎ এটি for...of
লুপে সরাসরি ব্যবহার করা যায় না।
const big = 123456789012345678901234567890n;
// এটা কাজ করবে না:
for (const digit of big) {
console.log(digit);
}
// TypeError: big is not iterable
BigInt বড় সংখ্যার গণনা বা হিসাবের ক্ষেত্রে অত্যন্ত উপকারী।
const factorial = (n) => {
let result = 1n;
for (let i = 2n; i <= n; i++) {
result *= i;
}
return result;
};
console.log(factorial(30n));
// আউটপুট: 265252859812191058636308480000000n
ক্রিপ্টোগ্রাফি এবং নিরাপত্তা সম্পর্কিত কাজগুলোতে বড় সংখ্যার প্রয়োজন হয়, যেখানে BigInt অপরিহার্য।
const prime1 = 32416190071n;
const prime2 = 32416187567n;
const product = prime1 * prime2;
console.log(product); // আউটপুট: 1050421056735679n
ডেটাবেসের আইডিগুলো সাধারণত বড় সংখ্যা হতে পারে, যেগুলো BigInt দিয়ে সঠিকভাবে পরিচালনা করা যায়।
const userId = 9007199254740993n;
console.log(userId); // আউটপুট: 9007199254740993n
BigInt এবং Number
টাইপের মধ্যে সরাসরি অপারেশন করা যায় না। এই ধরনের অপারেশন করলে ত্রুটি (error) ঘটতে পারে।
const big = 12345678901234567890n;
const num = 10;
console.log(big + num); // TypeError: Cannot mix BigInt and other types
কিছু বিল্ট-ইন জাভাস্ক্রিপ্ট ফাংশন বা মেথড BigInt সমর্থন করে না।
const big = 12345678901234567890n;
console.log(Math.sqrt(big)); // TypeError: Cannot convert a BigInt value to a number
BigInt JSON এ সরাসরি সমর্থিত নয়। JSON.stringify() ব্যবহার করলে ত্রুটি ঘটতে পারে।
const big = 12345678901234567890n;
console.log(JSON.stringify({ number: big }));
// TypeError: Do not know how to serialize a BigInt
const a = 100000000000000000000n;
const b = 200000000000000000000n;
const sum = a + b;
const difference = b - a;
const product = a * b;
const quotient = b / a;
console.log(sum); // আউটপুট: 300000000000000000000n
console.log(difference); // আউটপুট: 100000000000000000000n
console.log(product); // আউটপুট: 20000000000000000000000000000000000000000n
console.log(quotient); // আউটপুট: 2n
const big1 = 9007199254740991n; // Number.MAX_SAFE_INTEGER
const big2 = 9007199254740992n;
console.log(big1 < big2); // আউটপুট: true
console.log(big1 === 9007199254740991n); // আউটপুট: true
console.log(big1 === 9007199254740991); // আউটপুট: false
const big = 12345678901234567890n;
// স্ট্রিং এ রূপান্তর
const bigStr = big.toString();
console.log(bigStr); // আউটপুট: "12345678901234567890"
// স্ট্রিং থেকে বিগইন্ট
const parsedBig = BigInt(bigStr);
console.log(parsedBig); // আউটপুট: 12345678901234567890n
জাভাস্ক্রিপ্টের BigInt টাইপটি অত্যন্ত বড় পূর্ণসংখ্যা (integer) ধারণ করতে সক্ষম, যা Number
টাইপের সীমাবদ্ধতাকে কাটিয়ে ওঠে। এটি বড় সংখ্যার গাণিতিক হিসাব, ক্রিপ্টোগ্রাফি, এবং ডেটাবেস আইডির মতো ক্ষেত্রে অপরিহার্য। BigInt এর মাধ্যমে আপনি অগ্রিম নির্ভুলতা সহকারে বড় সংখ্যার সাথে কাজ করতে পারেন, তবে এর কিছু সীমাবদ্ধতা রয়েছে যেমন Number
টাইপের সাথে মিশ্র অপারেশন করা যায় না এবং JSON সমর্থন নেই। BigInt এর সঠিক ব্যবহার নিশ্চিত করতে ডেভেলপারদের উচিত এর বৈশিষ্ট্য এবং সীমাবদ্ধতাগুলো ভালোভাবে বোঝা। এর মাধ্যমে জাভাস্ক্রিপ্টে বড় সংখ্যার সাথে কাজ করা আরও সহজ এবং কার্যকর হয়ে ওঠে, যা উন্নত এবং নির্ভরযোগ্য অ্যাপ্লিকেশন তৈরি করতে সহায়ক।
Read more